home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / hack / 3_1_3 / sys / msdos / makemsc.utl < prev    next >
Encoding:
Text File  |  1993-05-30  |  7.4 KB  |  323 lines

  1. #    SCCS Id: @(#)MakeMSC.utl     3.1     93/05/23
  2. # Copyright (c) NetHack PC Development Team 1992, 1993.
  3. # NetHack may be freely redistributed.  See license for details.
  4. #
  5. # PC NetHack 3.1 Utilities Source Code Makefile for Microsoft(tm) "C" >= 6.0ax
  6. # and Microsoft Visual C++ Professional version >= 1.0.
  7. #
  8. #    In addition to your C compiler,
  9. #
  10. #    if you want to change        you will need a
  11. #    files with suffix        workalike for
  12. #           .y                yacc
  13. #           .l                lex
  14.  
  15. #
  16. #    Executables.
  17. #
  18.  
  19. CC    = cl
  20. LINK    = link
  21. MAKEBIN    = make45l
  22.  
  23. #
  24. #    Yacc/Lex ... if you got 'em.
  25. #    (Note: if you don't, leave the top pair uncommented.)
  26. #
  27.  
  28. YACC    = yacc
  29. LEX    = lex
  30. # YACC    = bison -y
  31. # LEX    = flex
  32.  
  33. YTABC    = y_tab.c
  34. YTABH    = y_tab.h
  35. LEXYYC    = lexyy.c
  36.  
  37. #
  38. #    Flags.
  39. #
  40.  
  41. #
  42. #    + prepare for CodeView symbolic debugger.
  43. #
  44.  
  45. CDFLAGS    =
  46. #CDFLAGS = /Zi
  47.  
  48. LDFLAGS =
  49. #LDFLAGS = /CO
  50.  
  51. #
  52. #    CC
  53. #
  54.  
  55. CPPFLAGS = /E /AL /c /Os /Gs /Gt20 /Zp1 /W0 /I$(INCL) $(CDFLAGS)
  56. CFLAGS     = /AL /c /Os /Gs /Gt20 /Zp1 /W0 /I$(INCL) $(CDFLAGS)
  57.  
  58. #
  59. #    Link
  60. #
  61.  
  62. LFLAGS    = /noi /seg:512 /map /st:5120 $(LDFLAGS)
  63.  
  64. #
  65. #    Directories
  66. #
  67.  
  68. INCL    = ..\include
  69. DAT    = ..\dat
  70. SRC    = ..\src
  71. OBJ    = $(SRC)\o
  72.  
  73. default: all
  74. #
  75. #    If you have yacc and lex programs and make any changes, comment
  76. #    out the upper two targets and uncomment the lower two.
  77. #
  78.  
  79. do_yacc: yacc_msg
  80. do_lex:  lex_msg
  81. # do_yacc: yacc_act
  82. # do_lex:  lex_act
  83.  
  84. #
  85. #    Optional C library specifier for those with non-standard
  86. #    libraries or a multiple-target library setup.
  87. #
  88.  
  89. # CLIB       = llibcer /nod
  90. CLIB     =
  91.  
  92. #############################################################################
  93. #
  94. # nothing below this line should have to be changed
  95. #
  96.  
  97. #
  98. #    Utility Objects.
  99. #
  100.  
  101. MAKESRC     =    makedefs.c
  102.  
  103. SPLEVSRC    =   lev_yacc.c  lev_$(LEX).c  lev_main.c  panic.c
  104.  
  105. DGNCOMPSRC  =   dgn_yacc.c  dgn_$(LEX).c  dgn_main.c
  106.  
  107. MAKEOBJS    =    makedefs.o      $(OBJ)\monst.o    $(OBJ)\objects.o
  108.  
  109. SPLEVOBJS   =    lev_yacc.o      lev_$(LEX).o        lev_main.o \
  110.         $(OBJ)\alloc.o      $(OBJ)\decl.o     $(OBJ)\drawing.o \
  111.         $(OBJ)\monst.o    $(OBJ)\objects.o  panic.o
  112.  
  113. DGNCOMPOBJS =    dgn_yacc.o      dgn_$(LEX).o        dgn_main.o \
  114.         $(OBJ)\alloc.o      panic.o
  115.  
  116. RECOVOBJS   =    recover.o
  117.  
  118. #
  119. #    Header Objects.
  120. #
  121.  
  122. CONFIG_H   = $(GLOBAL_H)           $(INCL)\tradstdc.h $(INCL)\config.h
  123. DECL_H     = $(YOU_H)              $(INCL)\quest.h    $(INCL)\spell.h  \
  124.              $(INCL)\color.h       $(INCL)\obj.h      $(INCL)\onames.h \
  125.              $(INCL)\pm.h          $(INCL)\decl.h
  126. DGN_FILE_H = $(INCL)\align.h       $(INCL)\dgn_file.h
  127. DISPLAY_H  = $(MONDATA_H)          $(INCL)\vision.h   $(INCL)\display.h
  128. DUNGEON_H  = $(INCL)\align.h       $(INCL)\dungeon.h
  129. EMIN_H     = $(DUNGEON_H)          $(INCL)\emin.h
  130. EPRI_H     = $(DUNGEON_H)          $(INCL)\align.h    $(INCL)\epri.h
  131. ESHK_H     = $(DUNGEON_H)          $(INCL)\eshk.h
  132. GLOBAL_H   = $(PCCONF_H)           $(INCL)\coord.h    $(INCL)\global.h
  133. HACK_H     = $(CONFIG_H)           $(DUNGEON_H)       $(DECL_H)          \
  134.              $(DISPLAY_H)          $(RM_H)            $(INCL)\monsym.h   \
  135.              $(INCL)\mkroom.h      $(INCL)\objclass.h $(INCL)\trap.h     \
  136.              $(INCL)\flag.h        $(INCL)\vision.h   $(INCL)\wintype.h  \
  137.              $(INCL)\engrave.h     $(INCL)\rect.h     $(INCL)\winprocs.h \
  138.              $(INCL)\trampoli.h    $(INCL)\hack.h
  139. MONDATA_H  = $(INCL)\align.h       $(INCL)\mondata.h
  140. MONST_H    = $(INCL)\align.h       $(INCL)\monst.h
  141. PCCONF_H   = $(INCL)\micro.h       $(INCL)\system.h   $(INCL)\pcconf.h
  142. PERMONST_H = $(INCL)\monattk.h     $(INCL)\monflag.h  $(INCL)\align.h \
  143.              $(INCL)\permonst.h
  144. RM_H       = $(INCL)\align.h       $(INCL)\rm.h
  145. SP_LEV_H   = $(INCL)\align.h       $(INCL)\sp_lev.h
  146. VAULT_H    = $(DUNGEON_H)          $(INCL)\vault.h
  147. YOU_H      = $(MONST_H)            $(YOUPROP_H)       $(INCL)\align.h \
  148.              $(INCL)\attrib.h      $(INCL)\you.h
  149. YOUPROP_H  = $(PERMONST_H)         $(MONDATA_H)       $(INCL)\prop.h \
  150.              $(INCL)\pm.h          $(INCL)\youprop.h
  151.  
  152. #
  153. #    Make Rules.
  154. #
  155.  
  156. .SUFFIXES:  .exe .o .c .y .l
  157.  
  158. .c.o:
  159.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  160.  
  161. #
  162. #    Primary Targets.
  163. #
  164. all:    utility.tag
  165.  
  166. utility.tag: $(OBJ)             $(INCL)\onames.h     $(INCL)\pm.h \
  167.              $(SRC)\monstr.c    $(SRC)\vis_tab.c     lev_comp.exe \
  168.              dgn_comp.exe       recover.exe
  169.              echo utilities made > utility.tag
  170.  
  171. $(OBJ):
  172.     if not exist $(OBJ)\*.* mkdir $(OBJ)
  173.  
  174. clean:
  175.     del *.o
  176.     del *.map
  177.  
  178. spotless: clean
  179.     if exist utility.tag       del utility.tag
  180.     if exist makedefs.exe       del makedefs.exe
  181.     if exist lev_comp.exe       del lev_comp.exe
  182.     if exist dgn_comp.exe       del dgn_comp.exe
  183.     if exist recover.exe       del recover.exe
  184.     if exist $(INCL)\date.h       del $(INCL)\date.h
  185.     if exist $(INCL)\onames.h  del $(INCL)\onames.h
  186.     if exist $(INCL)\pm.h       del $(INCL)\pm.h
  187.     if exist $(INCL)\vis_tab.h del $(INCL)\vis_tab.h
  188.     if exist $(SRC)\monstr.c   del $(SRC)\monstr.c
  189.     if exist $(SRC)\vis_tab.c  del $(SRC)\vis_tab.c
  190.  
  191. #
  192. #    Secondary Targets.
  193. #
  194.  
  195. $(INCL)\onames.h: makedefs.exe
  196.     .\makedefs -o
  197.  
  198. $(INCL)\pm.h: makedefs.exe
  199.     .\makedefs -p
  200.  
  201. $(SRC)\monstr.c: makedefs.exe
  202.     .\makedefs -m
  203.  
  204. $(SRC)\vis_tab.h: makedefs.exe
  205.     .\makedefs -z
  206.  
  207. $(SRC)\vis_tab.c: makedefs.exe
  208.     .\makedefs -z
  209.  
  210. #
  211. #    Makedefs Stuff
  212. #
  213.  
  214. makedefs.exe:    $(MAKEOBJS)
  215.     $(LINK) $(LFLAGS) $(MAKEOBJS), $*.exe,, $(CLIB);
  216.  
  217. makedefs.o:    $(CONFIG_H)        $(PERMONST_H)      $(INCL)\objclass.h \
  218.         $(INCL)\monsym.h    $(INCL)\qtext.h    $(INCL)\patchlevel.h
  219.  
  220. #
  221. #    Level Compiler Dependencies
  222. #
  223.  
  224. lev_comp.exe:    $(SPLEVOBJS)
  225.     $(LINK) $(LFLAGS) $(SPLEVOBJS),lev_comp.exe,, $(CLIB);
  226.  
  227. lev_yacc.o:    $(HACK_H)   $(SP_LEV_H)    lev_yacc.c
  228.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  229.  
  230. lev_$(LEX).o:    $(HACK_H)   $(SP_LEV_H)    $(INCL)\lev_comp.h \
  231.         lev_$(LEX).c
  232.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  233.  
  234. lev_main.o:    $(HACK_H)   $(SP_LEV_H)
  235.  
  236. $(INCL)\lev_comp.h: lev_yacc.c
  237.  
  238. lev_yacc.c:    lev_comp.y
  239.     $(MAKEBIN) YY=lev do_yacc
  240.  
  241. lev_$(LEX).c:    lev_comp.l
  242.     $(MAKEBIN) YY=lev do_lex
  243.  
  244. #
  245. #    Dungeon Dependencies
  246. #
  247.  
  248. dgn_comp.exe:    $(DGNCOMPOBJS)
  249.     $(LINK) $(LFLAGS) $(DGNCOMPOBJS),$*.exe,, $(CLIB);
  250.  
  251. dgn_yacc.o:    $(HACK_H)   $(DGN_FILE_H)  dgn_yacc.c
  252.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  253.  
  254. dgn_$(LEX).o:    $(HACK_H)   $(DGN_FILE_H)  $(INCL)\dgn_comp.h \
  255.         dgn_$(LEX).c
  256.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  257.  
  258. dgn_main.o:    $(HACK_H)
  259.  
  260. $(INCL)\dgn_comp.h:    dgn_yacc.c
  261.  
  262. dgn_yacc.c: dgn_comp.y
  263.     $(MAKEBIN) YY=dgn do_yacc
  264.  
  265. dgn_$(LEX).c:  dgn_comp.l
  266.     $(MAKEBIN) YY=dgn do_lex
  267.  
  268. #
  269. #    Yacc & Lex Magic.
  270. #
  271.  
  272. yacc_msg:
  273.     @echo $(YY)_comp.y has changed. To update $(YY)_yacc.c and $(YY)_comp.h run $(YACC).
  274.  
  275. yacc_act:
  276.     $(YACC) -d $(YY)_comp.y
  277.     copy $(YTABC) $(YY)_yacc.c
  278.     copy $(YTABH) $(INCL)\$(YY)_comp.h
  279.     del $(YTABC)
  280.     del $(YTABH)
  281.  
  282. lex_msg:
  283.     @echo $(YY)_comp.l has changed. To update $(YY)_$(LEX).c run $(LEX).
  284.  
  285. lex_act:
  286.     $(LEX) $(YY)_comp.l
  287.     copy $(LEXYYC) $(YY)_$(LEX).c
  288.     del $(LEXYYC)
  289.  
  290. #
  291. #    Recover Utility
  292. #
  293.  
  294. recover.exe:    $(RECOVOBJS)
  295.     $(LINK) $(LFLAGS) $*.o,$*.exe,, $(CLIB);
  296.  
  297. recover.o:    $(CONFIG_H)    recover.c
  298.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  299.  
  300. #
  301. #    Other Dependencies.
  302. #
  303.  
  304. $(OBJ)\alloc.o:    $(CONFIG_H)    $(SRC)\alloc.c
  305.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  306.  
  307. $(OBJ)\decl.o:  $(HACK_H)       $(INCL)\quest.h   $(SRC)\decl.c
  308.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  309.  
  310. $(OBJ)\drawing.o: $(HACK_H)     $(INCL)\termcap.h $(SRC)\drawing.c
  311.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  312.  
  313. $(OBJ)\monst.o: $(CONFIG_H)         $(PERMONST_H)    $(ESHK_H)     \
  314.         $(EPRI_H)         $(VAULT_H)        $(INCL)\monsym.h \
  315.         $(INCL)\color.h    $(SRC)\monst.c
  316.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  317.  
  318. $(OBJ)\objects.o: $(CONFIG_H)         $(INCL)\obj.h    $(INCL)\objclass.h \
  319.           $(INCL)\prop.h     $(INCL)\color.h    $(SRC)\objects.c
  320.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  321.  
  322. panic.o:    $(CONFIG_H)
  323.